/**
 * Text 封装 为了消除Text自带padding 其值大概为: fontSize * .2   用于样式中需要用到margin(top/bottom)  有padding有时也用到
 * @author showtan on 2018.11.21
 * @param {text} 文本
 * @param {size} 字体大小
 * @param {style} 其他样式 如: backgroundColor fontWeight textAlign ...
 * @param {line} 当文本过长的时候裁剪文本。包括折叠产生的换行在内，总的行数不会超过这个属性的限制
 * @param {onPress} 点击以后调用此回调函数
 */

import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { Text } from 'react-native';


export default class TextCell extends PureComponent {
  static propTypes = {
    text: PropTypes.string.isRequired,
    size: PropTypes.number,
    style: PropTypes.object,
    line: PropTypes.number,
    onPress: PropTypes.func
  };

  render() {
    const { text, size, style, line, onPress } = this.props;
    const fontSize = size || 14, numberOfLines = line || 1;
    return (
      onPress ?
        <Text onPress={onPress} numberOfLines={numberOfLines}
          style={[{ fontSize, backgroundColor: 'transparent', height: fontSize * numberOfLines, lineHeight: Math.round(fontSize * 1.2) - 1 }, style]}>{text}</Text>
        :
        <Text numberOfLines={numberOfLines}
          style={[{ fontSize, backgroundColor: 'transparent', height: fontSize * numberOfLines, lineHeight: Math.round(fontSize * 1.2) - 1 }, style]}>{text}</Text>
    );
  }
}